Дан массив из n целых чисел. Найдите сумму всех элементов массива, не равных
максимальному.
Вход. В первой
строке задано число n (n ≤ 100). Во второй строке задано n целых чисел, каждое из которых по
модулю не превышает 100.
Выход. Выведите
сумму всех элементов массива, которые не равны максимальному.
Пример входа |
Пример выхода |
5 5 9 3 4 6 |
18 |
обработка массива
Найдем
максимальный элемент массива. Вычислим сумму всех чисел, не равных
максимальному. Отметим, что максимальных элементов в массиве может быть
несколько.
Пример
Наибольший
элемент в приведенном примере равен 9.
Сумма
элементов, не равных максимальному, равна 5 + 3 + 4 + 6 = 18.
Реализация алгоритма
Объявим рабочий массив.
int m[101];
Читаем входной массив.
scanf("%d",&n);
for(i = 0; i < n; i++)
scanf("%d",&m[i]);
Вычисляем максимальный элемент mx.
mx = -100;
for(i = 0; i < n; i++)
if (m[i] > mx) mx = m[i];
Находим сумму s
всех чисел массива, не равных максимальному mx.
s = 0;
for(i = 0; i < n; i++)
Если текущий элемент m[i] не равен максимуму mx, то добавляем его к сумме s.
if (m[i] != mx) s += m[i];
Выводим искомую сумму.
printf("%d\n",s);
Реализация алгоритма – STL
Читаем входные данные. Входную последовательность
храним в векторе v.
scanf("%d", &n);
v.resize(n);
for (i = 0; i < n; i++)
scanf("%d", &v[i]);
Находим максимальный элемент mx.
mx = *max_element(v.begin(),
v.end());
Заменим все элементы mx в массиве на
0.
replace(v.begin(), v.end(),
mx, 0);
Найдем сумму всех элементов в массиве (максимальные
элементы в нем заменены на 0).
s = accumulate(v.begin(),
v.end(), 0);
Выводим ответ – сумму всех элементов без максимальных.
printf("%d\n", s);
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int m[] = new int[n];
for (int i = 0; i < n; i++)
m[i] = con.nextInt();
int max = -100;
for(int i = 0; i < n; i++)
if (m[i] > max) max = m[i];
int s = 0;
for(int i = 0; i < n; i++)
if (m[i] != max) s += m[i];
System.out.println(s);
con.close();
}
}
Python реализация
Читаем
входные данные.
n = int(input())
lst = list(map(int,input().split()))
Находим
максимальный элемент mx списка lst.
mx = max(lst)
В
переменной sum находим сумму
всех элементов списка lst, не
равных максимальному значению mx.
sum = 0
for x in lst:
if x != mx: sum +=
x
Выводим
ответ.
print(sum)
Python реализация – суммирование
Читаем входные данные.
n = int(input())
lst = list(map(int,input().split()))
Находим максимальный элемент списка mx.
mx = max(lst)
В переменной res вычисляем
сумму всех элементов списка lst, не
равных максимальному значению mx.
res = sum(x for
x in lst if
x != mx)
Выводим ответ.
print(res)